package grupo1.fotomultas.Fotomultas.EstadosInfraccion;

import java.util.Calendar;

import org.uqbar.commons.model.UserException;

import grupo1.fotomultas.Fotomultas.CalendarGenerator;
import grupo1.fotomultas.Fotomultas.Infracciones.Infraccion;

public class InfraccionVencida extends EstadoInfraccion {

	private static InfraccionVencida instance;

	public static InfraccionVencida instance(){
		if(instance==null)
			instance = new InfraccionVencida();
		return instance;
	}
	
	@Override
	public Boolean estasVencida() {
		return true;
	}

	@Override
	public void marcarPagada(Infraccion infraccion) {
		throw new UserException("Una infraccion vencida no puede ser pagada");
	}
	
	@Override
	public void marcarInvalidada(Infraccion infraccion) {
		throw new UserException("Una infraccion vencida no puede ser invalidada");
	}
	
	@Override
	public void marcarPerdonada(Infraccion infraccion) {
		throw new UserException("Una infraccion vencida no puede ser perdonada");
	}
	
	public void verificarVencimiento(Infraccion infraccion) {
		Calendar fechaVencimientoAComparar;
		
		fechaVencimientoAComparar = CalendarGenerator.Instance().generarFechaAnterior(4,0,0);
		if(fechaVencimientoAComparar.after(infraccion.getFecha()))
			infraccion.setEstado(this);		
	}

}
